# -*- coding: utf-8 -*-

# === ユーザープロフィールの管理用コントローラ
class Portal::ProfilesController < ApplicationController
  skip_before_filter :login_required, :only => :show
  before_filter :check_profile, :except => [:index, :show]

  # === ログイン中ユーザーのプロフィール表示
  def index
    @profile = current_user.profile
    unless @profile
      redirect_to edit_portal_profile_path(@profile),
                   :notice => "プロフィールを編集してください。"
      return false
    end
  end

  # === 任意のユーザーのプロフィール表示
  def show
    @profile = Profile.find(params[:id])
    unless @profile.check_permission(current_user)
      redirect_to "/", :notice => "指定されたプロフィールを表示する権限がありません。"
      return false
    end
  end

  # === ログイン中ユーザーのプロフィール編集フォームの表示
  def edit
  end

  # === ログイン中ユーザーのプロフィール更新実行
  def update
    if @profile.update_attributes(params[:profile])
      redirect_to portal_profiles_path,
                :notice => "プロフィールを更新しました。"
    else
      render :action => "edit"
    end
  end

  private

  # === 処理対象となるプロフィールレコードの取得
  def check_profile
    @profile = Profile.find(params[:id])
    unless @profile == current_user.profile
      redirect_to "/", :notice => "指定されたプロフィールを表示する権限がありません。"
      return false
    end
    return true
  end
end
